const DEBUG = require("./package-util").DEBUG;
const PackageName = require("./package-util").name;

module.exports = {
    IS_SYS_WINDOWS: require("os").type() == "Windows_NT",

    callForEach: function (arr, each, cbk) {
        var index = 0;
        var callEach = function () {
            if (index < arr.length) {
                each(arr[index++], callEach);
            } else {
                setTimeout(cbk, 0);
            }
        };
        callEach();
    },

    log: function (tag) {
        return function () {
            if (DEBUG === "true") {
                var args = [].slice.call(arguments);
                args.unshift("[" + (tag || PackageName) + "]");
                Editor.log.apply(this, args);
            }
        };
    },
};

// 对Date的扩展，将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(H)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，
// 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子：
// (new Date()).Format("yyyy-MM-dd HH:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d H:m:s.S")      ==> 2006-7-2 8:9:4.18
Date.prototype.Format = function (fmt) {
    //author: meizz
    var o = {
        "M+": this.getMonth() + 1, //月份
        "d+": this.getDate(), //日
        "h+": this.getHours(), //小时
        "m+": this.getMinutes(), //分
        "s+": this.getSeconds(), //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        S: this.getMilliseconds(), //毫秒
    };
    if (/(y+)/.test(fmt))
        fmt = fmt.replace(
            RegExp.$1,
            (this.getFullYear() + "").substr(4 - RegExp.$1.length)
        );
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt))
            fmt = fmt.replace(
                RegExp.$1,
                RegExp.$1.length == 1
                    ? o[k]
                    : ("00" + o[k]).substr(("" + o[k]).length)
            );
    return fmt;
};
